<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /**
       * 1. 原型链继承
       * 优点：
       *      1. 可继承构造函数的属性，父类构造函数的属性、父类原型的属性
       * 缺点：
       *      1. 无法向父类构造函数传参
       *      2. 所有实例共享父类的属性，若父类共有属性为引用类型，
       *         一个子类实例更改父类引用类型属性时会影响其他实例
       */
      function Parent1() {
        this.name = 'zyh'
        this.like = ['唱歌', '跑步', '游泳']
      }

      Parent1.prototype.getName = function () {
        console.log(this.name)
      }

      function Child1() {}
      // 原型链继承
      Child1.prototype = new Parent1()

      var child1 = new Child1()
      child1.getName()

      // 修改父类引用类型属性，会影响其他实例
      child1.like.push('打球')
      console.log(child1.like)

      var child2 = new Child1()
      console.log(child2.like)
    </script>
  </body>
</html>
